package com.orangelife.webservice.service.propFeeReceipt;

import java.util.List;
import java.util.Map;

import javax.jws.WebParam;
import javax.jws.WebService;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;

import org.apache.cxf.interceptor.InInterceptors;
import org.apache.cxf.interceptor.OutInterceptors;

import com.orangelife.exception.AppBizException;
import com.orangelife.service.propFeeReceipt.model.PropFeeReceiptDto;

/*****************************************************************
 * Copyright(C) ORANGELIFE Corporation 2015. All Rights Reserved.
 *****************************************************************/
/*
 * ============================================================== 功能名
 * propFeeReceipt类 的WebService基本作业
 * 
 * @author @author zhr
 * 
 * @version 1.1.0
 * 
 * @date 2016-12-12 15:47:46
 * ==============================================================
 */
@WebService
@InInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingInInterceptor")
@OutInterceptors(interceptors = "org.apache.cxf.interceptor.LoggingOutInterceptor")
public interface IPropFeeReceiptWebService {

	/**
	 * 用途 添加 （橙子生活）
	 * 
	 * @author zhr
	 * @date创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param propFeeReceipt
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/add")
	@Produces({ "application/json" })
	public Response addPropFeeReceipt(
			@Context HttpServletRequest servletRequest,
			@WebParam PropFeeReceiptDto propFeeReceipt) throws Exception;

	@POST
	@Path("/addReceipt")
	@Produces({ "application/json" })
	public Response addReceipt(@Context HttpServletRequest servletRequest,
			@WebParam PropFeeReceiptDto propFeeReceipt) throws Exception;

	/***
	 * 作废收据
	 * 
	 * @param servletRequest
	 * @param propFeeReceipt
	 * @return
	 * @throws Exception
	 */
	@PUT
	@Path("/nullify")
	@Produces({ "application/json" })
	public Response nullifyReceipt(@Context HttpServletRequest servletRequest,
			@WebParam PropFeeReceiptDto propFeeReceipt) throws Exception;

	@GET
	@Path("receiptInfo")
	@Produces({ "application/json" })
	public Response findPropFeeReceiptInfo(
			@Context HttpServletRequest servletRequest,
			@QueryParam("linkID") String linkID, @QueryParam("type") String type)
			throws Exception;

	/**
	 * 用途 修改（橙子生活）
	 * 
	 * @author zhr
	 * @date创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param propFeeReceipt
	 * @return
	 * @throws Exception
	 */
	@PUT
	@Path("/edit")
	@Produces({ "application/json" })
	public Response editPropFeeReceipt(
			@Context HttpServletRequest servletRequest,
			@WebParam PropFeeReceiptDto propFeeReceipt) throws Exception;

	/**
	 * 用途 删除（橙子生活）
	 * 
	 * @date 创建时间 2016-12-12 15:47:46
	 * @author zhr
	 * @param servletRequest
	 * @param receiptID
	 * @return
	 * @throws Exception
	 */
	@DELETE
	@Path("{receiptID}")
	@Produces({ "application/json" })
	public Response deletePropFeeReceipt(
			@Context HttpServletRequest servletRequest,
			@PathParam("receiptID") String receiptID) throws Exception;

	/**
	 * 用途 详情（橙子生活）
	 * 
	 * @date 创建时间 2016-12-12 15:47:46
	 * @author zhr
	 * @param servletRequest
	 * @param receiptID
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("{receiptID}/")
	@Produces({ "application/json" })
	public Response findPropFeeReceiptByID(
			@Context HttpServletRequest servletRequest,
			@PathParam("receiptID") String receiptID) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */
	@GET
	@Produces({ "application/json" })
	public Response getAllPropFeeReceipt(
			@Context HttpServletRequest servletRequest,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	@GET
	@Path("monthReNum")
	@Produces({ "application/json" })
	public Response getMonthNoReNum(@Context HttpServletRequest servletRequest,
			@QueryParam("rType") String rType, @QueryParam("type") String type,
			@QueryParam("apartmentID") String apartmentID,
			@QueryParam("feeDate") String feeDate,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/bauthfinds")
	@Produces({ "application/json" })
	public Response bauthFindPropFeeReceipts(
			@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeeReceipt) throws Exception;

	/**
	 * 用途 查询列表（橙子生活）
	 * 
	 * @author zhr
	 * @date 创建时间 2016-12-12 15:47:46
	 * @param servletRequest
	 * @param search
	 *            搜索内容
	 * @param tsCreate
	 *            创建时间
	 * @param pageIndex
	 *            页码
	 * @param pageSize
	 *            页面大小
	 * @return
	 * @throws Exception
	 */

	@POST
	@Path("/bauthfind")
	@Produces({ "application/json" })
	public Response bauthFindPropFeeReceipt(
			@Context HttpServletRequest servletRequest,
			@WebParam List<String> propFeeReceipt) throws Exception;

	/***
	 * 清除缓存
	 * 
	 * @param request
	 * @param response
	 * @return
	 * @throws AppBizException
	 */
	@GET
	@Path("clearCache")
	@Produces({ "application/json" })
	public Response clearCache(@Context HttpServletRequest request,
			@Context HttpServletResponse response) throws Exception;

	/**
	 * 为开票信息
	 * 
	 * @param servletRequest
	 * @param type
	 * @param apartmentID
	 * @param search
	 * @param tsCreate
	 * @param pageIndex
	 * @param pageSize
	 * @return
	 * @throws Exception
	 */
	@GET
	@Path("reNumInfo")
	@Produces({ "application/json" })
	public Response getPropFeeReceiptInfo(
			@Context HttpServletRequest servletRequest,
			@QueryParam("type") String type,
			@QueryParam("apartmentID") String apartmentID,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	/***
	 * 查询详情
	 * 
	 * @param servletRequest
	 * @param propFeeReceipt
	 * @return
	 * @throws Exception
	 */
	@POST
	@Path("reNumDetail")
	@Produces({ "application/json" })
	public Response getPropFeeReceiptInfo(
			@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeeReceipt) throws Exception;

	/**
	 * 修改支付方式
	 * 
	 * @param servletRequest
	 * @param map
	 * @return
	 * @throws Exception
	 */
	@PUT
	@Path("/editPayWay")
	@Produces({ "application/json" })
	public Response editPayWay(@Context HttpServletRequest servletRequest,
			PropFeeReceiptDto propFeeReceipt) throws Exception;

	@GET
	@Path("receiptNum")
	@Produces({ "application/json" })
	public Response getReceiptNum(@Context HttpServletRequest servletRequest,
			@QueryParam("commID") String commID,
			@QueryParam("pmID") String pmID,
			@QueryParam("search") String search,
			@QueryParam("tsCreate") String tsCreate,
			@QueryParam("pageIndex") String pageIndex,
			@QueryParam("pageSize") String pageSize) throws Exception;

	@PUT
	@Path("/invalid")
	@Produces({ "application/json" })
	public Response invalidReceipt(@Context HttpServletRequest servletRequest,
			@WebParam PropFeeReceiptDto propFeeReceipt) throws Exception;

	@POST
	@Path("receiptDetail")
	@Produces({ "application/json" })
	public Response receiptDetail(@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeeReceipt) throws Exception;

	@POST
	@Path("receiptDetails")
	@Produces({ "application/json" })
	public Response receiptDetails(@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeeReceipt) throws Exception;

	@POST
	@Path("hasOpenPreReceipt")
	@Produces({ "application/json" })
	public Response hasOpenPreReceipt(@Context HttpServletRequest servletRequest,
			@WebParam Map<String, Object> propFeeReceipt) throws Exception;

}
